home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
HPAVC
/
HPAVC CD-ROM.iso
/
HEDGE11.ZIP
/
HEDGE.DOC
< prev
next >
Wrap
Text File
|
1995-02-12
|
10KB
|
241 lines
Hedge Row
Copyright 1993-1995 Diana Gruber
This game is one of many I have on my hard disk that I never quite finished.
I am releasing it now, with source code, in the hope that some other game
programmers will find it useful. Feel free to dissect and re-use this code,
and write "real" games based on it.
Hedge Row has several features that make it interesting. It was my first
attempt at an SVGA game. It runs in an 800x600x256 video mode, and uses two
physical pages (video memory) and one logical page (EMS or XMS). In this
sense, it is a resource-intensive program. Yet the EXE size is tiny and the
program uses less than 100K of conventional RAM.
Another interesting feature is the recursive maze solution. This is one of
those problems they love to give you in computer science classes. Students who
want to turn in my code to satisfy their homework assignments have my
permission to do so.
The mouse motion is also interesting. The mouse is constrained to the maze
paths; it will not go off the path into illegal areas. This was hard code to
write. Looking at it, it doesn't look that difficult, but I remember I had a
real hard time writing it.
Running Hedge Row
-----------------
Just type HEDGE. Follow the simple instructions on the screen. If you get
stuck, press F1 for help.
Cheat mode
----------
Maze tile paths are drawn in two colors. The true path is drawn in palette 7,
and the other paths are drawn in palette 5. Both palettes are set to white,
but you can change the color of the true path by using the "cheat mode".
Press 'c' to activate the cheat mode. This will change the color of the true
path from white to light blue. Pressing 'c' again will change it back. The
cheat mode makes it easy to traverse the maze path, but it is not nearly as
interesting as the recursive maze solution.
Recursive maze solution
-----------------------
Press 'r' to see an honest-to-goodness recursive maze solution. I wrote this,
but don't ask me how it works. I haven't the foggiest. It works great though,
doesn't it?
Next maze
---------
Press 'n' to abandon the current maze and start a new one. There are seven
mazes distributed with this version of the Hedge Row program. Will there ever
be more? I don't know!
Exit
----
Press Escape to exit the program. Isn't that easy?
Troubleshooting
---------------
Hedge Row requires a mouse, SVGA card and monitor, and approximately 512K of
extended or expanded memory to run. If any of these are missing, Hedge Row
will not work.
If you have EMS or XMS memory and Hedge Row reports that you do not, check
that other programs are not using that memory. On my system, I noticed
Smartdrive was eating up all my extended memory. Turn Smartdrive off, or
configure it to use less memory, so that Hedge Row can have some.
SVGA cards
----------
Hedge Row should work on most SVGA cards. It uses Fastgraph to do a chipset
autodetect and then does direct chipset support. If it does not find a chipset
it knows, it will support Super VGA through the VESA BIOS extensions.
Please report any SVGA problems to Ted Gruber Software. If you have video
hardware that Fastgraph does not support, we want to know about it.
Files in the distribution
-------------------------
HEDGE.EXE the program
HEDGE.DOC this file
HEDGE.C source code for the game
HEDGE.H prototypes for functions in HEDGE.C
COMMON.C source code for "often used" functions
COMMON.H prototypes for functions in COMMON.C
DEFS.H defines, includes, and global variables
DUBDINER.PCX PCX file containing picture of dub diner
HEDGE.PCX PCX file containing maze tiles
HEDGE.ATT attributes of maze tiles (open on left, right, top, etc.)
MAZE001.LEV \
MAZE002.LEV \
MAZE003.LEV \
MAZE004.LEV maze data for 7 different mazes
MAZE005.LEV /
MAZE006.LEV /
MAZE007.LEV /
Compiling and linking
---------------------
Hedge Row requires Fastgraph 4.0 or Fastgraph/Light 4.0 or to link. You can
download Fastgraph/Light from our BBS at (702) 796-7134, from our internet
ftp site (ftp.accessnv.com), or from the CompuServe GAMDEV forum (GO GAMDEV).
I used the medium model to compile. The following commands show the
compilation and linking sequences for each supported compiler:
Borland C++:
BCC -mm HEDGE.C COMMON.C FGM.LIB
Microsoft C/C++ and Visual C++:
CL /AM HEDGE.C COMMON.C /link FGM /STACK:6144
Microsoft QuickC:
QCL /AM HEDGE.C COMMON.C /link FGM /STACK:6144
Microsoft Visual C++ 32-bit Edition with Phar Lap TNT extender:
CL HEDGE.C COMMON.C /link /stub:\TNT\BIN\GOTNT.EXE FG32VC.LIB
Power C:
PC /mm HEDGE
PC /mm COMMON
PCL HEDGE COMMON ;FGM
Turbo C and Turbo C++:
TCC -mm HEDGE.C COMMON.C FGM.LIB
Watcom C/C++ (16 bits):
WCL /mm HEDGE.C COMMON.C FGM.LIB
Watcom C/C++ (32 bits) with Rational Systems DOS/4GW extender:
WCL386 /l=dos4g HEDGE.C COMMON.C FG32.LIB FG32DPMI.LIB
Zortech C++:
ZTC -mm HEDGE.C COMMON.C FGM.LIB
If you are linking with Fastgraph/Light, replace the FGM library references
with FGLM.
Stack considerations
--------------------
The recursive solution requires an increased stack size. The more vertices in
the maze, the bigger stack you need. I increased the stack size by adding this
to the Microsoft link command: /STACK:6144. This stack is big enough for most
standard mazes. A really complicated maze would need a bigger stack.
Maze #7 has the most vertices.
How maze tiles work
-------------------
The tiles are 16x16 pixel rectangles, stored in the file HEDGE.PCX. Each tile
represents a possible maze path: up and down, left to right, branch in 2 or 3
directions, etc. They are numbered starting at 0 in the upper left corner,
through 239 in the lower right. Not all the tiles are needed in the maze game,
there are a bunch of "blank" tiles.
The layout array is defined like this:
unsigned char layout[50][38];
It is a two dimensional array corresponding to the positions of the tiles on
the SVGA screen. 50 tiles x 16 pixels = 800 pixels total, which is the
horizontal resolution of the screen. Similarly, the vertical resolution is 600
pixels, or 38 tiles x 16 pixels.
Tiles are stored on the hidden page and transferred to the visual page using
fg_tcxfer. Color 0 is the transparent color, so the tiles can be superimposed
on the DUBDINER.PCX picture without completely covering it.
Meanwhile, a clean copy of the dubdiner picture is stored offscreen on a
logical page in EMS or XMS memory. When a new maze is drawn, the picture is
copied to the visual page and a new sequence of tiles is drawn over it.
What I would add to Hedge Row to make it a real game
----------------------------------------------------
For one thing, I would create a better intro screen. Also, I would use better
fonts. The reason I used the ROM font is so you can link with the shareware
version of Fastgraph. It would look better if I used Fastgraph/Fonts.
Also, I would generate about 100 more mazes. This is the main reason I never
finished the program. Those mazes take a long time to create, and they get
boring after a while.
I wrote some maze generation code, but the mazes were not attractive. In my
opinion, mazes that have repetitious patterns look prettier. The computer-
generated mazes were too random.
I would also add some challenges, such as a timer, some traps (quicksand?),
monsters, and items such as hidden walls, secret keys, etc. I think it would
be an interesting game if I had done those things, but I never got around to
it...my hard disk is littered with half-finished games.
About dub diner
---------------
The background picture, DUBDINER.PCX, was done by those great guys over at dub
Media. Dub Media is dedicated to providing quality computer graphics to meet
your needs and budget. Whether your reuqirements are VGA-resolution still
images or broadcast-quality animation, dub Media can offer a creative
alternative.
Dub Media sent me the diner file in a GIF format, but I converted it to a PCX
file so my users can recompile and relink the source code with
Fastgraph/Light. I also reorganized the palette colors a little so my maze
path would be red and white. For an original of the dubdiner GIF, and
information about other art, you can contact Alfred Woo and Mike Wall at:
dub Media
75 Trapelo Road
Waltham, MA 02154
(617) 647-1101
About Fastgraph
---------------
Fastgraph is a graphics library. You use it to write games. You can download
the shareware version, or if you call me, I will mail it to you, along with
more information, an order form and current prices.
Distribution permission
-----------------------
This program is being distributed primarily for Fastgraph users to use as an
example to help them learn about Fastgraph. It is not a shareware program, and
is not appropriate for vendor catalogs, retail sales, or CD-ROM distribution.
This program may be distributed via bulletin boards and online services such
as CompuServe. You may make copies of this program and give it to your friends
as long as you don't charge them money for it. Any other type of distribution
is prohibited unless you have written permission from the author.
Contacting the author
---------------------
Diana Gruber
Ted Gruber Software
PO Box 13408
Las Vegas, NV 89112
(702) 735-1980 (voice)
(702) 796-7134 (bbs)
(702) 735-4603 (fax)